好希望今天就是鐵人賽的final
final
可以用來修飾類
、方法
、變數
。
在class
前面加入final
後:此class
無法被繼承。例如:String
、StringBuffer
、StringBuilder
。
public final class A {}
💡 //不可以這樣寫,因為A已經使用final修飾,不可被繼承
// public class B extends A {}
在method
前面加入final
後:此方法不能被重寫(override)
。
例如:Object.getClass()
,在Java SE API中Object.getClass()
是被這樣子寫的public final native Class<?> getClass();
,當中native
代表的是去使用底層的C
、C++
語法,並且使用此方法
時在記憶體中是會放在Native Method Stack
,與一般方法放在Stack
不一樣。
public class A {
public void method(){}
}
public class B extends A {
💡 //不可以這樣寫,因為A中的method已經使用final修飾,不可被重寫
//public void method(){}
}
在變數
前面加上final
,代表這個變數
相當於是常量
,不可以被更改,一般會建議全部使用大寫命名,並且若由兩個單詞以上組成時,會加上_
,例如:MIN_BALANCE
。
類的屬性:
屬性
使用final
時,可以在幾個地方賦值
實例初始化區塊
中賦值。final
:
使用該變數前
進行賦值,不然會報錯。參數
前加上final
,代表在使用該方法時,就會為這個參數加上final
,所以在方法中是不能去修改這個參數的值。靜態屬性
前面加上final
代表這個靜態屬性
等於全局常量
,整個class
中只會有這一個。